/*
 * envioAlCliente.cpp
 *
 *  Created on: Nov 15, 2014
 *      Author: root
 */


#include "envioAlCliente.h"
#include "../clasesAuxiliares/SocketCommunication.h"
#include <string.h>
#include <iostream>
#include <unistd.h>
#include <stdio.h>


//tipo_senial
const int CREAR = 1;
const int JUEGO = 2;
const int COLISION = 3;
const int RESTAR_VIDAS = 4;
const int RESCATE_PRINCESA =5;
const int REINICIAR = 6;
const int BORRAR = 9;
const int FIN_JUEGO = 10;

//senial
const int ARRIBA = 1;
const int ABAJO = 2;
const int IZQUIERDA = 3;
const int DERECHA = 4;
const int SALTO = 5;

const int SLEEP = 0;

const int OCULTAR_ELEMENTO = 100;


//esta funcion reinicia la partida despues de un rescate
//el cliente borra los barriles y los fuegos y espera las señales de las posiciones iniciales
void envioAlCliente::envioReiniciarPantalla( char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2){
	envio env;
    sprintf(env.tipo_senial, "%d",REINICIAR);
	//env.tipo_senial = REINICIAR;
	strcpy(env.identificador, id);
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	return;
}

void envioAlCliente::envioCreacion( char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2, int x, int y){
//	envio env;
//	env.tipo_senial = CREAR;
//	strcpy(env.identificador, id);
	envio env;
	strcpy(env.identificador,id);
    sprintf(env.tipo_senial, "%d",JUEGO);
	//env.tipo_senial = JUEGO;
    sprintf(env.x, "%d",x);
	//env.x = x;
    sprintf(env.y, "%d",y);
	//env.y = y;

	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	return;
}

//envia  la colision informando los personajes que colisionaron
//void envioAlCliente::envioColision(char * id, char * id_Colision , SocketCommunication * socket_J1, SocketCommunication * socket_J2)
//{
//	envio env;
//	strcpy(env.identificador,id);
//	env.tipo_senial = COLISION;
//	strcpy(env.colision ,id_Colision);
//	usleep(SLEEP);
//	socket_J1->SendBloq(&env, sizeof(env));
//	socket_J2->SendBloq(&env, sizeof(env));
//}


//esta funcion envia al cliente para que reeste una vida al jugador indicado
void envioAlCliente::envioRestarVidas(char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2, int x)
{
	envio env;
	strcpy(env.identificador,id);
    sprintf(env.tipo_senial, "%d",RESTAR_VIDAS);
	//env.tipo_senial = RESTAR_VIDAS;
    sprintf(env.x, "%d",x);
	//env.x = x;
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	usleep(500);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	usleep(500);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));

	std::cout <<  "RESTAR VIDA : " << id << std::endl;
}

//esta funcion envia al cliente para que reeste una vida al jugador indicado
void envioAlCliente::envioBorrarPersonaje(char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2)
{
//	envio env;
//	strcpy(env.identificador,id);
//	env.tipo_senial = BORRAR;
	envio env;
	strcpy(env.identificador,id);
    sprintf(env.tipo_senial, "%d",JUEGO);
	//env.tipo_senial = JUEGO;
    sprintf(env.x, "%d",OCULTAR_ELEMENTO);
	//env.x = OCULTAR_ELEMENTO;
    sprintf(env.y, "%d",OCULTAR_ELEMENTO);
	//env.y = OCULTAR_ELEMENTO;
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
}


//esta funcion envia al cliente para que sume un rescate al jugador que le estoy informando
void envioAlCliente::envioRescatePrincesa(char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2)
{
	envio env;
	strcpy(env.identificador,id);
    sprintf(env.tipo_senial, "%d",RESCATE_PRINCESA);
	//env.tipo_senial = RESCATE_PRINCESA;
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	std::cout <<  "RESCATE PRINCESA: " << id << std::endl;
}

void envioAlCliente::envioPosicion(char * id, SocketCommunication * socket_J1, SocketCommunication * socket_J2, int x, int y)
{
	envio env;
	strcpy(env.identificador,id);
    sprintf(env.tipo_senial, "%d",JUEGO);
	//env.tipo_senial = JUEGO;
    sprintf(env.x, "%d",x);
	//env.x = x;
    sprintf(env.y, "%d",y);
	//env.y = y;
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));

}


void envioAlCliente::envioFinJuego(SocketCommunication * socket_J1, SocketCommunication * socket_J2)
{
	envio env;
	strcpy(env.identificador,"fin");
    sprintf(env.tipo_senial, "%d",FIN_JUEGO);
	//env.tipo_senial = FIN_JUEGO;
	usleep(SLEEP);
	socket_J1->SendBloq(&env, sizeof(env));
	socket_J2->SendBloq(&env, sizeof(env));
	std::cout <<  "FIN JUEGO" << std::endl;
}


envioAlCliente::envioAlCliente() {
	// TODO Auto-generated constructor stub

}

envioAlCliente::~envioAlCliente() {
	// TODO Auto-generated destructor stub
}

